home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / oddwnd / irregwin.ctl < prev    next >
Text File  |  1997-12-10  |  5KB  |  160 lines

  1. VERSION 5.00
  2. Begin VB.UserControl UserControl1 
  3.    BackColor       =   &H00FF0000&
  4.    BackStyle       =   0  'Transparent
  5.    ClientHeight    =   3600
  6.    ClientLeft      =   0
  7.    ClientTop       =   0
  8.    ClientWidth     =   4800
  9.    PaletteMode     =   2  'Custom
  10.    ScaleHeight     =   3600
  11.    ScaleWidth      =   4800
  12. End
  13. Attribute VB_Name = "UserControl1"
  14. Attribute VB_GlobalNameSpace = False
  15. Attribute VB_Creatable = True
  16. Attribute VB_PredeclaredId = False
  17. Attribute VB_Exposed = False
  18. Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long
  19.  
  20. Dim oldpos As RECT
  21. Dim oldparent As Long
  22. Dim clicked As Boolean
  23. Dim oldpic As Picture
  24.  
  25. Enum BackStyle
  26.   [Transparent] = 0
  27.   [Opaque] = 1
  28. End Enum
  29. Private Sub UserControl_DblClick()
  30.  
  31. 'we'll use a simple flag here
  32.  
  33. If clicked = False Then
  34.   
  35.   'Set the extender.visible to false
  36.   'NB: This stops the Visual Basic from
  37.   'thinking the window is still inside
  38.   'the form when it is in fact outside!
  39.   UserControl.Extender.Visible = False
  40.   
  41.   'Get old window position (just for clean-
  42.   '-liness) and brevity
  43.   GetWindowRect UserControl.hwnd, oldpos
  44.   
  45.   'retrieve old parent window
  46.   oldparent = GetParent(UserControl.hwnd)
  47.   
  48.   'prevent it from appearing in the
  49.   'system desktop task windows.
  50.   SetWindowText UserControl.hwnd, "Baby Face"
  51.   
  52.   'determine new parent
  53.   SetWindowLong UserControl.hwnd, GWL_HWNDPARENT, 0&
  54.   SetParent UserControl.hwnd, ByVal 0&
  55.   'maintain window position and SHOW the
  56.   'window.
  57.   'NB: This DOES NOT AFFECT the Extender.Visible property!
  58.   'WOW! Irregular - Truly irregular Windows.
  59.   SetWindowPos UserControl.hwnd, -1, oldpos.Left, oldpos.Top, (oldpos.Right - oldpos.Left), (oldpos.Bottom - oldpos.Top), &H40
  60.   'set for -1 for top-most (always remain on top)
  61.   'change to 0 for default.
  62.   Beep
  63.   clicked = True
  64.  
  65. Else
  66.   
  67.   'Restore the window's defaults.
  68.   'NOTE THIS: When you use Me.Hide on the
  69.   'VB Form this control is on, you will not
  70.   'affect the control. However, if you
  71.   'minimize the form you'll also minimize
  72.   'this outside-of-form irregular window
  73.   'as well (this is by-design windows
  74.   'behaviour, and you can subclass the VB
  75.   'form and prevent this from happening
  76.   'if you really want to).
  77.   SetWindowLong UserControl.hwnd, GWL_HWNDPARENT, oldparent
  78.   SetParent UserControl.hwnd, oldparent
  79.   UserControl.Extender.Visible = True
  80.   clicked = False
  81.  
  82. End If
  83.  
  84. '**************************************'
  85. '* So, Anybody thought this was not   *'
  86. '* possible. It's been a dream of our *'
  87. '* programmers to be able to do this! *'
  88. '**************************************'
  89.  
  90. End Sub
  91.  
  92. Private Sub UserControl_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  93. ReleaseCapture
  94. SendMessage UserControl.hwnd, 161, 2, ByVal 0&
  95. End Sub
  96. 'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!
  97. 'MappingInfo=UserControl,UserControl,-1,BackStyle
  98. Public Property Get BackStyle() As BackStyle
  99.   BackStyle = UserControl.BackStyle
  100. End Property
  101.  
  102. Public Property Let BackStyle(ByVal New_BackStyle As BackStyle)
  103.   UserControl.BackStyle() = New_BackStyle
  104.   PropertyChanged "BackStyle"
  105. End Property
  106.  
  107. 'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!
  108. 'MappingInfo=UserControl,UserControl,-1,MaskPicture
  109. Public Property Get MaskPicture() As Picture
  110.   Set MaskPicture = UserControl.MaskPicture
  111. End Property
  112.  
  113. Public Property Set MaskPicture(ByVal New_MaskPicture As Picture)
  114.   Set UserControl.MaskPicture = New_MaskPicture
  115.   PropertyChanged "MaskPicture"
  116. End Property
  117.  
  118. 'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!
  119. 'MappingInfo=UserControl,UserControl,-1,Picture
  120. Public Property Get Picture() As Picture
  121.   Set Picture = UserControl.Picture
  122. End Property
  123.  
  124. Public Property Set Picture(ByVal New_Picture As Picture)
  125.   Set UserControl.Picture = New_Picture
  126.   UserControl.PaletteMode = 2
  127.   Set UserControl.Palette = New_Picture
  128.   PropertyChanged "Picture"
  129. End Property
  130.  
  131. 'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!
  132. 'MappingInfo=UserControl,UserControl,-1,BackColor
  133. Public Property Get BackColor() As OLE_COLOR
  134.   BackColor = UserControl.BackColor
  135. End Property
  136.  
  137. Public Property Let BackColor(ByVal New_BackColor As OLE_COLOR)
  138.   UserControl.BackColor() = New_BackColor
  139.   PropertyChanged "BackColor"
  140. End Property
  141.  
  142. 'Load property values from storage
  143. Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
  144.  
  145.   UserControl.BackStyle = PropBag.ReadProperty("BackStyle", 0)
  146.   Set MaskPicture = PropBag.ReadProperty("MaskPicture", Nothing)
  147.   Set Picture = PropBag.ReadProperty("Picture", Nothing)
  148.   UserControl.BackColor = PropBag.ReadProperty("BackColor", &HFF0000)
  149. End Sub
  150.  
  151. 'Write property values to storage
  152. Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
  153.  
  154.   Call PropBag.WriteProperty("BackStyle", UserControl.BackStyle, 0)
  155.   Call PropBag.WriteProperty("MaskPicture", MaskPicture, Nothing)
  156.   Call PropBag.WriteProperty("Picture", Picture, Nothing)
  157.   Call PropBag.WriteProperty("BackColor", UserControl.BackColor, &HFF0000)
  158. End Sub
  159.  
  160.